*--==-----------------------=======*%%%%@@@@@@@@@@@%%%%%%%%#*####****
*===------------------------====+##%%%%%@@@%%@@@@@%%%%%#############%
*============================+*#%%%%%%%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%
===============++++++++++***####%%%%%##%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%
+==++++++++++++*****++**###############%@%%@%%%%%%%%%%%%%%%%%%%%%%%%%
++++++*++**+****#***************######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*+*****###************#****#*****####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*****########******##*********+**####%%%%%%%%%%%###**#%%%%%%%%%%%%%%%
*+++***+++******#**********+==+**##*##%%%%%%#######*+++%%%%%%%%%%%%%%
**************##*#*********++*****#######%%##########**#%%%%%%%%%%%%%
********######################**####**#####%%%%%%%%%%##%%%%%%%%%%%%%%
##**#########################################%#%%%%################%%
%%%%%%%%%%%%%%%%####%%%#%%%%##%%%%%%%%#%####*+*###%##################
############%%#######%%%#%%%%%%%###%%%%%%%##*++%#####%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%######%%%%%%%%%%%%%%%%%%%###**++*%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%#%%%%%%%%%%%%%%%%%%%%##%##*++*#%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%#%#######%%%%%%%%%%%%%%**#%###***#%%%%%%#%%%%%%%%%%%%%%%%
%%%%%%%%%%###########%%%%%%%%%%%%%%%#%%%%#**##*#%%%%%%%#############%
%%%%%%%%#################%%%%%%%####%##**##%##**#%%%%###############%
%%%%%########***##**########%%%%########***#%%%%#+*##################
%%###########***#############%%%%########*#*%%%###%%%###############%
###########****##############%%%%%%#####%%**%%##*####%##############%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%%%###%%%%%%%%%%%%%%%%%%%